package com.turing.post.antimoney.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 支付机构可疑交易(行为)报告数据字典数据访问接口
 * 
 * @author 李治
 * 
 */
@Remote
@Local
public interface SuspiciousTransDao {
	/**
	 * 插入可疑交易明细
	 * 
	 * @param suspiciousTrans
	 * @throws PCPSApplicationException
	 */
	public void insertSuspiciousTrans(SuspiciousTrans suspiciousTrans)
			throws PCPSApplicationException;

	/**
	 * 修改可疑交易明细
	 * 
	 * @param suspiciousTrans
	 * @throws PCPSApplicationException
	 */
	public void updateSuspiciousTrans(SuspiciousTrans suspiciousTrans)
			throws PCPSApplicationException;

	/**
	 * 条件查询可疑交易明细
	 * 
	 * @param webInput
	 * @param alarmRuleType预警规则类型
	 * @param startAlarmTime起始预警时间
	 * @param endAlarmTime终止预警时间
	 * @param reportStats上报状态
	 * @param startReportTime起始上报时间
	 * @param endReportTime终止上报时间
	 * @param suspiciousName可疑主体名称
	 * @param suspiciousId可疑主体证件号
	 * @param startAmount起始金额
	 * @param endAmount终止金额
	 * @param page页号
	 * @return
	 */
	public List<Object[]> getSuspiciousTransByCondition(PCPSWebInput webInput,
			String alarmRuleType, String startAlarmTime, String endAlarmTime,
			String reportStats, String startReportTime, String endReportTime,
			String suspiciousName, String suspiciousId, BigInteger startAmount,
			BigInteger endAmount, Integer page);

	/**
	 * 条件查询可疑交易明细总数
	 * 
	 * @param webInput
	 * @param alarmRuleType预警规则类型
	 * @param startAlarmTime起始预警时间
	 * @param endAlarmTime终止预警时间
	 * @param reportStats上报状态
	 * @param startReportTime起始上报时间
	 * @param endReportTime终止上报时间
	 * @param suspiciousName可疑主体名称
	 * @param suspiciousId可疑主体证件号
	 * @param startAmount起始金额
	 * @param endAmount终止金额
	 * @return
	 */
	public Integer getSuspiciousTransCountByCondition(PCPSWebInput webInput,
			String alarmRuleType, String startAlarmTime, String endAlarmTime,
			String reportStats, String startReportTime, String endReportTime,
			String suspiciousName, String suspiciousId, BigInteger startAmount,
			BigInteger endAmount);

	/**
	 * 根据主键查询可疑交易明细
	 * 
	 * @param webInput
	 * @param suspiciousTrans
	 * @return
	 */
	public SuspiciousTrans getSuspiciousTransById(
			SuspiciousTrans suspiciousTrans);

	/**
	 * 删除可以交易明细
	 * 
	 * @param suspiciousTrans
	 * @throws PCPSApplicationException
	 */
	public void deleteSuspiciousTrans(SuspiciousTrans suspiciousTrans)
			throws PCPSApplicationException;

	/**
	 * 根据预警信息ID查询
	 * @param alarmInfoId
	 * @return
	 */
	public List<SuspiciousTrans> getSuspiciousTransListByAlarmInfoId(
			BigInteger alarmInfoId);
	/**
	 * 根据reportidID查询
	 * @param reportidId
	 * @return
	 */
	public List<SuspiciousTrans> getSuspiciousTransListByReportId(
			BigInteger reportId);
}
